A. Field of the Invention
Concepts described herein relate generally to network traffic flow, and more particularly, to per-flow queuing of network traffic to support enhanced quality of service requirements.
B. Description of Related Art
In an increasingly networked world, more and more traffic, such as data, voice, and video, is transmitted over public and proprietary networks. When routing traffic through the network, it is desirable to be able to assign different types of traffic different priorities as the traffic traverses the network. Some applications require stringent limits on end-to-end traffic delay while other applications require minimal bandwidth guarantees. For example, because streaming video and voice data, when it is delayed, can result in a noticeable degradation in quality to the end-user, it may be desirable to assign this type of traffic a higher priority than other traffic.
In Internet Protocol (IP) packet-based networks, each packet may include a header section, a portion of which may be used to indicate the traffic class or “flow” to which the packet is assigned. A router at the edge of a network may set the flow for a packet. Routers in the core of the network may identify a flow to which traffic belongs and handle the flow accordingly. More specifically, a router may allocate network resources (such as bandwidth) to certain flows within the router based on predetermined bandwidth allocation policies. Typically, within the router, packets of different flow queues that are routed to the same output port share the link resources of the output port. When the incoming traffic data rate exceeds the output port link capacity, the packets may be buffered and the bandwidth allocation policies applied.
One known set of techniques for allocating bandwidth are flow-based scheduling techniques, such as the so-called Flow-Based Fair Queuing (FBFQ) technique that ensures delay and/or bandwidth guarantees for particular flows. In these techniques, a flow associated with each received packet is used to determine how often the traffic belonging to the flow should be served based on certain pre-defined rules.
One problem with known flow-based bandwidth allocation techniques is that they are insufficiently scalable because of high memory space requirement. Conventional network devices that support flow-based quality of service (QoS) today typically set a ceiling for the number of flow queues that may be supported in the system. Once this ceiling has been reached, the system cannot handle any additional flows. A flow queue is released when the system ensures that the flow is terminated or is no longer active.
There is a need in the art to implement more flexible flow-based bandwidth allocation techniques that support an increased number of flows.